Due to the increasing demands for high-speed communication systems that can process not only the multimedia services consisting of a variety of information such as images and wireless data but also the early voice-oriented services, the recent mobile communication systems are required to increase the system efficiency using the channel coding technique suitable for the systems.
During transmission of data, inevitable errors may occur due to the noises, interference, fading and the like depending on the channel conditions, causing a loss of information. Generally, in order to reduce the loss of information, a variety of error control techniques are used depending on the characteristics of the channel, thereby increasing the system reliability. The most basic one of these error control techniques may be an error control technique that uses error correcting codes. A Low Density Parity Check (LDPC) code is one of the error correcting codes.
The LDPC code, which is a code proposed by Gallager, may be roughly classified into a binary LDPC code and a non-binary LDPC code. The binary LDPC code is defined by a binary parity check matrix of a sparse structure, in which a majority of elements constituting the matrix have a value of ‘0’ and a minority of elements other than the elements having a value of ‘0’ have a value of ‘1’. In other words, the elements constituting the binary parity check matrix have a value of ‘0’ or ‘1’. A parity check matrix of the non-binary LDPC code, unlike that of the binary LDPC code, is made up of elements in a Galois Field GF(q=2p) (where q is an integer greater than 2). In the GF, p has a value of an integer greater than 1, and for p=1, the LDPC code is a binary LDPC code. For example, in GF(8), 8 symbols may be represented.
A relationship between the non-binary LDPC code and the binary LDPC code will be described in brief.
For example, in the case of the non-binary LDPC code, symbols of GF(4) may be represented as shown in Table 1 below.
TABLE 10111
If Table 1 is read in the order of rows and represented in a line, the result can be ‘0111’, which can be converted into a decimal value of ‘7’. Because of GF(4), if 7 is divided by 4, the remainder is 3 (=7 mod 4). Similarly, even if Table 1 is read in the order of columns and represented in a line, the result can be ‘0111’, which can be converted into a decimal value of ‘7’. Thus, in GF(4), this value represents 3 (=7 mod 4). Therefore, Table 1 may represent a non-binary LDPC code value of 3. Based on this example, a non-binary LDPC code may be converted into a binary LDPC code. For example, Table 2 below shows an example of a non-binary LDPC code, and the non-binary LDPC code may be converted into a binary LDPC code as shown in Table 3 below.
TABLE 2110302
TABLE 3101000010100010011110010
In Table 3, if the underlined bold elements
                                 1          ⁢                                                                                                      ⁢          0                                              0          ⁢                                                                                                      ⁢          1                    in the upper left are read in the order of rows and represented in a line, they can be represented as ‘1001’, which can be converted into a decimal value of ‘9’. If the decimal value is converted into a value in GF(4), 9 mod 4=1. Therefore, If 1 in GF(4) is converted into a binary LDPC code, the result is
                                             1            ⁢                                                                                                                            ⁢            0                                                            0            ⁢                                                                                                                            ⁢            1                                .  In other words, in the non-binary LDPC code in Table 2, if an element (=1) in the upper left is converted into a binary LDPC code, the result is
                                             1            ⁢                                                                                                                            ⁢            0                                                            0            ⁢                                                                                                                            ⁢            1                                .  Other elements in Table 2 may also be converted in the same way, generating Table 3.
For example, a non-binary parity check matrix H configured in GF(4) may be expressed as Table 4 below.
TABLE 4110302
In Table 4, each element of the matrix may have 4 values, which mean the values defined in GF(4). For example, GF(4) may be defined as GF(4)={0, 1, 2, 3}, and the elements may be expressed as a non-binary parity check matrix as shown in Table 4. Generally, elements of GF(q=2p) may be presented in a minimum polynomial of α. Therefore, elements of GF(q=2p) may be expressed as {0, 1, α, . . . , αq-2}. If elements of a non-binary LDPC code are converted into elements of a binary LDPC code, they are converted in the form of a binary p-tuple (a0, a1, . . . , ap-1). For GF(4), based on a definition of the minimum polynomial of p(x)=1+x+x2, a GF(4)'s element of 0 may be expressed as a binary tuple (0, 0); a GF(4)'s element of 1 may be expressed as a binary tuple (0, 1); a GF(4)'s element of α may be expressed as a binary tuple (1, 0); and a GF(4)'s element of α2 may be expressed as a binary tuple (1, 1). Based on this example, a non-binary LDPC code may be converted into a binary LDPC code. For example, Table 5 below shows an example of a non-binary LDPC code, and the non-binary LDPC code may be converted into a binary LDPC code as shown in Table 6 below.
TABLE 5110α20α
TABLE 6010100110010
In Table 6, underlined bold elements 1, 1 in the lower left constitute a binary LDPC code corresponding to α2 in GF(4).
This binary LDPC code may be converted into a non-binary LDPC code, and channel coding and decoding may be performed in units of symbols using the non-binary LDPC code. It is known that the non-binary LDPC code is much superior to the binary LDPC code in terms of the error correction capability because the non-binary LDPC code encodes and decodes the modulation cardinality and channel cardinality in the same unit.
When performing decoding using a non-binary LDPC code, a receiver may de-modulate received data, output a message vector for each received symbol, and provide the output to a decoder. The decoder may perform iterative decoding using some or all of the elements constituting the message vector. Conventionally, however, the number of vector elements of each vector, which are used for decoding, is fixed to the same value at all times regardless of the data characteristics or channel conditions. In this case, an unnecessarily large number of vector elements may be used for decoding, even though the channel conditions are good. Therefore, during decoding, computation may excessively increase, causing a waste of the power and time required during the decoding.